import pandas as pd
import numpy as np

df = pd.DataFrame({
    'Animal': ['cat', 'penguin', 'dog', 'spider', 'snake'],
    'Number_legs': [4, 2, 4, 8, np.nan]  # 包含空值用于演示na_option
})

# 不同method参数对比
# 'average'（默认，平均排名）：没太大意义，基本用不到
# 'min'（组内最低排名）：类似mysql rank
# 'max'（组内最高排名），
# 'first'（按数据出现顺序）：类似mysql row_number
# 'dense'（类似'min'，但组间排名递增1）：类似mysql dense_rank
df['average_rank'] = df['Number_legs'].rank(method='average',ascending=False)
df['min_rank'] = df['Number_legs'].rank(method='min',ascending=False)
df['max_rank'] = df['Number_legs'].rank(method='max',ascending=False)
df['first_rank'] = df['Number_legs'].rank(method='first',ascending=False)
df['dense_rank'] = df['Number_legs'].rank(method='dense',ascending=False)

print(df)